package com.example;

import com.alibaba.druid.pool.DruidDataSource;
import java.io.IOException;
import java.io.StringReader;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class Utils {

    // 解析配置信息，初始化数据库连接池参数
    public static void loadDataToCfg(Properties pro, String cfg) throws IOException {
        pro.load(new StringReader(cfg));
        ConnectionCfg.DRIVER = pro.getProperty("driverClassName");
        ConnectionCfg.Url = pro.getProperty("url");
        ConnectionCfg.USERNAME = pro.getProperty("username");
        ConnectionCfg.PASSWORD = pro.getProperty("password");
        ConnectionCfg.initCount = Integer.parseInt(pro.getProperty("initCount"));
        ConnectionCfg.maxCount = Integer.parseInt(pro.getProperty("maxCount"));
        ConnectionCfg.maxWait = Integer.parseInt(pro.getProperty("maxWait"));
        ConnectionCfg.minIdle = Integer.parseInt(pro.getProperty("minIdle"));
        System.out.println("数据库连接池配置获取成功！！！");
    }


    public static Connection createDbPoolConnection() throws SQLException {
        // 数据源配置
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(ConnectionCfg.Url);
        dataSource.setDriverClassName(ConnectionCfg.DRIVER); //这个可以缺省的，会根据url自动识别
        dataSource.setUsername(ConnectionCfg.USERNAME);
        dataSource.setPassword(ConnectionCfg.PASSWORD);
        //下面都是可选的配置
        dataSource.setInitialSize(ConnectionCfg.initCount);  //初始连接数，默认0
        dataSource.setMaxActive(ConnectionCfg.maxCount);  //最大连接数，默认8
        dataSource.setMinIdle(ConnectionCfg.minIdle);  //最小闲置数
        dataSource.setMaxWait(ConnectionCfg.maxWait);  //获取连接的最大等待时间，单位毫秒

        //获取连接
        Connection connection = dataSource.getConnection();
        System.out.println("连接获取成功！！");
        return connection;
    }

}
